package org.wdcode.base.interfaces.action.impl;

import java.util.List;

import org.wdcode.base.bean.EntityBean;
import org.wdcode.base.interfaces.action.QueryAction;
import org.wdcode.base.interfaces.service.Service;
import org.wdcode.base.struts.action.BaseQueryAction;

/**
 * 使用通用业务接口实现的通用查询Action
 * @author WD
 * @since JDK6
 * @version 1.0 2009-09-23
 */
public abstract class BaseServiceQueryAction<S extends Service<E>, E extends EntityBean> extends BaseQueryAction implements
		QueryAction {
	// 序列化ID
	private static final long	serialVersionUID	= 2386444867532553327L;
	// 通用业务接口
	private S					service;
	// 通用实体
	private E					entity;
	// 实体列表
	private List<E>				lsEntity;

	/**
	 * 查询所有
	 * @return 跳转list
	 * @throws Exception
	 */
	public String all() throws Exception {
		// 获得所有结果
		lsEntity = service.queryByAll();
		// 返回列表页
		return LIST;
	}

	/**
	 * 分页查询
	 * @return 跳转list
	 * @throws Exception
	 */
	public String page() throws Exception {
		// 获得分页查询结果
		lsEntity = service.queryByPage(entity, getPage());
		// 返回列表页
		return LIST;
	}

	/**
	 * 实体条件查询出所有
	 * @return 跳转list
	 * @throws Exception
	 */
	public String entity() throws Exception {
		// 获得分页查询结果
		lsEntity = service.queryByEntity(entity);
		// 返回列表页
		return LIST;
	}

	/**
	 * 跳转到添加页
	 * @return 跳转
	 * @throws Exception
	 */
	public String add() throws Exception {
		return SUCCESS;
	}

	/**
	 * 跳转到修改页
	 * @return 跳转
	 * @throws Exception
	 */
	public String edit() throws Exception {
		// 获得实体信息
		entity = service.get(entity.getId());
		// 返回成功页
		return SUCCESS;
	}

	/**
	 * 跳转到删除页
	 * @return 跳转
	 * @throws Exception
	 */
	public String del() throws Exception {
		return SUCCESS;
	}
	
	/**
	 * 跳转到列表页
	 * @return 跳转
	 * @throws Exception
	 */
	public String dels() throws Exception {
		return LIST;
	}

	/**
	 * 跳转到列表页
	 * @return 跳转
	 * @throws Exception
	 */
	public String list() throws Exception {
		return LIST;
	}

	/**
	 * 获得通用业务接口
	 * @return 通用业务接口
	 */
	public S getService() {
		return service;
	}

	/**
	 * 设置通用业务接口
	 * @param service 通用业务接口
	 */
	public void setService(S service) {
		this.service = service;
	}

	/**
	 * 获得通用实体
	 * @return the entity
	 */
	public E getEntity() {
		return entity;
	}

	/**
	 * 设置通用实体
	 * @param entity 通用实体
	 */
	public void setEntity(E entity) {
		this.entity = entity;
	}

	/**
	 * 获得通用实体列表
	 * @return 通用实体列表
	 */
	public List<E> getEntitys() {
		return lsEntity;
	}

	/**
	 * 设置通用实体列表
	 * @param lsEntity 通用实体列表
	 */
	public void setEntitys(List<E> lsEntity) {
		this.lsEntity = lsEntity;
	}
}
